package main

func main() {
	/*
	对于在包一级声明的变量来说，他们的生命周期和整个程序的运行过程是一致的。
	而相比之下，在局部变量的声明周期则是动态的：从每次创建一个新的变量声明语句开始，直到该变量不在被引用为止，然后变量的存储空间看可能会被回收。
	函数的参数变量和返回值变量都是局部变量，他们函数每次被调用时候创建
	*/

}
var global *int
func ff() {//逃逸变量需要额外分配内存，同时对性能癿优化可能会产生细微的影响。
	var x int //x从ff中逃逸了，堆
	x = 1
	global = &x
}
func g() {
	y := new(int)//方法结束，y将不可达，栈
	*y = 1
}
